<?php
session_start();
require_once '../model/Aquisicao.php';
class AquisicaoDLO {

    private $aquisicoes = array();
    private static $aquisicaoDLO;

    private function __construct() {
    }

    /**
     * @method aquisicaoDLO getInstance() para obter uma única instância do controlador
     * @return AquisicaoDLO
     */
    public static function &getInstance() {
        if (!isset (self::$aquisicaoDLO)) {
            if (!isset ($_SESSION['aquisicaoDLO'])) {
                $_SESSION['aquisicaoDLO'] = serialize(new AquisicaoDLO());
            }
            self::$aquisicaoDLO = unserialize($_SESSION['aquisicaoDLO']);
        }
        return self::$aquisicaoDLO;
    }

    public function cadastrar(&$descricao, &$entidade_pessoa) {
        $aquisicao = new Aquisicao();
        $aquisicao->setDescricao($descricao);
        $aquisicao->setEntidade_pessoa($entidade_pessoa);
        $aquisicao->cadastrar();
    }

    public function &listar() {
        $result = &Aquisicao::listar();
        $resultado = array();
        for ($i = 0; $i < sizeof($result); $i++) {
            $row = array();
            $row['cod_aquisicao'] = &$result[$i]->getCod_aquisicao();
            $row['descricao'] = &$result[$i]->getDescricao();
            $row['entidade_pessoa'] = &$result[$i]->getEntidade_pessoa();
            $resultado[$i] = &$row;
            unset ($row);
        }
        return $resultado;
    }

    public function excluir(&$cod_aquisicao) {
        $aquisicao = null;
        if (isset ($this->aquisicoes[$cod_aquisicao])) {
            $aquisicao = &$this->aquisicoes[$cod_aquisicao];
        } else {
            $aquisicao = &Aquisicao::consultar($cod_aquisicao);
            $this->aquisicoes[$cod_aquisicao] = &$aquisicao;
            $_SESSION['aquisicaoDLO'] = serialize($this);
        }
        $aquisicao = &$this->aquisicoes[$cod_aquisicao];
        if ($aquisicao->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $aquisicao->excluir();
        unset ($this->aquisicoes[$cod_aquisicao]);
        $_SESSION['aquisicaoDLO'] = serialize($this);
    }

    public function alterar(&$cod_aquisicao, &$campo_id, &$campo_valor) {
        $aquisicao = null;
        if (isset ($this->aquisicoes[$cod_aquisicao])) {
            $aquisicao = &$this->aquisicoes[$cod_aquisicao];
        } else {
            $aquisicao = &Aquisicao::consultar($cod_aquisicao);
            $this->aquisicoes[$cod_aquisicao] = &$aquisicao;
            $_SESSION['aquisicaoDLO'] = serialize($this);
        }
        if ($aquisicao->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $aquisicao->alterarCampo($campo_id, $campo_valor);
        $this->aquisicoes[$cod_aquisicao] = &$aquisicao;
        $_SESSION['aquisicaoDLO'] = serialize($this);
    }

    public function &consultar(&$cod_aquisicao) {
        $aquisicao = null;
        if (isset ($this->aquisicoes[$cod_aquisicao])) {
            $aquisicao = &$this->aquisicoes[$cod_aquisicao];
        } else {
            $aquisicao = &Aquisicao::consultar($cod_aquisicao);
            $this->aquisicoes[$cod_aquisicao] = &$aquisicao;
            $_SESSION['aquisicaoDLO'] = serialize($this);
        }
        $row = array();
        $row['cod_aquisicao'] = &$aquisicao->getCod_aquisicao();
        $row['descricao'] = &$aquisicao->getDescricao();
        $row['entidade_pessoa'] = &$aquisicao->getEntidade_pessoa();
        $row['vinculado'] = &$aquisicao->isVinculado();
        return $row;
    }
}
?>